package syf.sparsearray;

public class SparseArray {
    public static void main(String[] args) {
        /*创建一个11*11的棋盘 有棋子
          0：没有棋子
          1：黑子
          2：白子
        */
        int[][] chessArr1 =new int[11][11];
        chessArr1[1][2]=1;
        chessArr1[2][3]=2;
        //有效值个数
        int sum=0;
//        System.out.println("原始的二维数组:");
        for(int row=0;row<11;row++){
            for(int col=0;col<11;col++){
                if (0!=chessArr1[row][col]){
                    sum++;
                }
            }
        }
        //创建稀疏数组
        int[][] sparseArr=new int[sum+1][sum+1];
        //赋棋盘的信息值
        sparseArr[0][0]=11;
        sparseArr[0][1]=11;
        sparseArr[0][2]=sum;
        //计数
        int count=1;
        //遍历二维数组 储存非0的值的位置
        for(int row=0;row<11;row++){
            for(int col=0;col<11;col++){
                if (0!=chessArr1[row][col]){
                    sparseArr[count][0]=row;
                    sparseArr[count][1]=col;
                    sparseArr[count][2]=chessArr1[row][col];
                    count++;
                }
            }
        }
        for (int[] x:sparseArr) {
            for (int y : x)
                System.out.print(y+"\t");
            System.out.println();
        }
        //将稀疏数组赋值给原来的棋板
        int[][] oldArr=new int[11][11];
//        for (int num=0;num<sum;num++){
//            --count;
//            oldArr[sparseArr[count][0]][sparseArr[count][1]]=sparseArr[count][2];
//        }
        for (int num=2;num>0;num--){
            oldArr[sparseArr[num][0]][sparseArr[num][1]]=sparseArr[num][2];
        }
        for(int[] xx:oldArr){
            for (int jj:xx)
                System.out.print(jj+"\t");
            System.out.println();
        }
    }
}
